package com.atguigu.gulimall.cart.vo;

import lombok.AccessLevel;
import lombok.Data;
import lombok.Getter;

import java.math.BigDecimal;
import java.util.List;

/**
 * 购物车
 */
@Data
public class CartVo {


    private List<CartItemVo> items;

    /**
     * 商品总数
     */
    @Getter(AccessLevel.NONE)
    private Integer countNum;

    /**
     * 商品类别数
     */
    @Getter(AccessLevel.NONE)
    private Integer countType;

    /**
     * 商品总价
     */
    @Getter(AccessLevel.NONE)
    private BigDecimal totalPrice;

    /**
     * 商品减免价格
     */
    private BigDecimal reduce = BigDecimal.ZERO;

    public Integer getCountNum() {
        int nums = 0;
        if (items == null || items.isEmpty()) {
            return nums;
        }
        for (CartItemVo item : items) {
            nums += item.getCount();
        }
        return nums;
    }

    public Integer getCountType() {
        if (items == null || items.isEmpty()) {
            return 0;
        }
        return items.size();
    }

    public BigDecimal getTotalPrice() {
        BigDecimal tp = BigDecimal.ZERO;
        if (items == null || items.isEmpty()) {
            return tp;
        }
        for (CartItemVo item : items) {
            if (item.getChecked()) {
                // 只计算选中的价格
                tp = tp.add(item.getTotalPrice());
            }
        }
        tp = tp.subtract(getReduce());
        return tp;
    }

}
